package cxydmmszl.chapter05.t083.simple;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * <li style="color: red;">Prob</li>
 * 字符串的调整 II
 * <li style="color: green;">Desc</li>
 * 给定一个字符类型的数组 chas[]，chas右半区全是空字符，左半区不含有空字符。
 * 现在想将左半区的空格字符串替换成 “%20”，假设 chas 右半区足够大，可以满足替换需要的空间，请完成替换函数。
 * <li style="color: green;">Input</li>
 * 输入一行，代表 chas 的左半区 (1≤length(chas)≤10^5) 。
 * <li style="color: green;">Output</li>
 * 输出一行，代表替换后的字符串。
 * <li style="color: blue;">Link</li> CD104
 *
 * @author habitplus
 * @since 2021-09-08 20:47
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        char[] chas = bf.readLine().toCharArray();

        String s = replaceAndAdjust(chas);

        System.out.println(s);
    }

    private static String replaceAndAdjust(char[] chs) {
        if (chs == null || chs.length == 0) {
            return "";
        }

        // 获取左半区的长度，和空格数
        int spaceCnt = 0;
        int n = chs.length;
        for (char ch : chs) {
            if (ch == ' ') {
                spaceCnt++;
            }
        }

        if (spaceCnt == 0) return new String(chs);

        int last = n + spaceCnt * 2 - 1;
        char[] chas = new char[last + 1];

        for (int i = n - 1; i > -1; i--) {
            if (chs[i] == ' ') {
                chas[last--] = '0';
                chas[last--] = '2';
                chas[last--] = '%';
            } else {
                chas[last--] = chs[i];
            }
        }

        return new String(chas);
    }

}
